import axios from 'axios'
import {message,Modal} from 'antd'
import {ExclamationCircleOutlined} from '@ant-design/icons'
import {resetUser} from '@/store/action'
const {confirm} =Modal
//为了解决调接口遭遇同源策略的阻塞，这里“前端项目调用当前端口上的接口”
const baseURL="http://localhost:8898"
const version = '/api/react'
//创建axios实例
const service = axios.create({
    baseURL:baseURL+version,
    timeout:5000
})
//添加请求拦截器
service.interceptors.request.use(
    config=>{
        //添加token
        config.headers.Authorization = localStorage.getItem('token')
        return config
    },err=>{
        console.log(error);//打印bug
        return Promise.reject(error)
    }
    
)
//添加响应拦截器
service.interceptors.response.use(
    response=>{
        //如果代码走到这里，http状态码=200
        const res = response.data
        console.log('响应拦截器',res);
        //对业务状态码进行判断
        if(res.err!==0){
            //如果业务状态码不等于0，表示业务失败，就把后端的反馈信息弹出来
            message.error(res.msg || '入参有误')
            //当token过期或者token是伪造的，要求重新登录
            if(res.err=== -1){
                //表示要重新登录
                confirm({
                    title:'当前你的登录已失效',
                    icon:<ExclamationCircleOutlined/>,
                    content:'请重新登录',
                    okText:'重新登录',
                    //隐藏取消按钮，要求必须重新登录
                    cancelButtonProps:{
                        style:{
                            display:'none'
                        }
                    },onOk(){
                        // StorageEvent.dispatch(resetUser())
                    }
                })
            }
            return Promise.reject(new Error(res.message || 'Error'))
        }else {
            return res.data
        }
    },error=>{
        console.log('err' + error)
        return Promise.reject(error)
    }
)
export default service